

function getXY(canvas, evt){
    let style = window.getComputedStyle(canvas, null);
    //宽高
    let cssWidth = parseFloat(style["width"]);
    let cssHeight = parseFloat(style["height"]);
    //各个方向的边框长度
    // @ts-ignore
    let borderLeft = parseFloat(style["border-left-width"]);
    // @ts-ignore
    let borderTop = parseFloat(style["border-top-width"]);
    // @ts-ignore
    let paddingLeft = parseFloat(style["padding-left"]);
    // @ts-ignore
    let paddingTop = parseFloat(style["padding-top"]);

    let scaleX = canvas.width / cssWidth; // 水平方向的缩放因子
    let scaleY = canvas.height / cssHeight; // 垂直方向的缩放因子

    let x = evt.clientX;
    let y = evt.clientY;

    let rect = canvas.getBoundingClientRect();
    x -= (rect.left + borderLeft + paddingLeft); // 去除 borderLeft paddingLeft 后的坐标
    y -= (rect.top + borderTop + paddingTop); // 去除 borderLeft paddingLeft 后的坐标

    x *= scaleX; // 修正水平方向的坐标
    y *= scaleY; // 修正垂直方向的坐标

    return {x,y}
};